summaryrefslogtreecommitdiff
path: root/src/app/article/all/[pageId]/page.tsx
blob: c94909a8e4967700e9bc4cc54d25286639671b02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { ArticleLoader } from "../../../../util/articleLoader";
import dateformat from "dateformat";
import { ArticleListElement } from "../../_components/articleListElement";
import { PPV } from "../../../../util/consts";
import { chunk } from "../../../../util/arrayChunk";
import { pagenationElement } from "../../_components/pagenationElement";
import { TableElement } from "../../../_components/tableElements";
dateformat.i18n.dayNames = [
  '日', '月', '火', '水', '木', '金', '土',
  '日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'
];
type PageType = {
  searchParams: Record<string, string>,
  params: {
    pageId: string,
  }
}
export async function generateMetadata(context: PageType) {
  const pageId = getPageIdNumber(context.params.pageId);
  return {
    title: `アキバ総研アーカイブ:ページ ${pageId}`,
  }
}
export default async function Page(context: PageType) {
  const pageId = getPageIdNumber(context.params.pageId);
  const loadedData = await ArticleLoader.instance.loadData();
  const chunkdData = chunk(loadedData.articles, PPV);
  const displayData = chunkdData[pageId - 1];
  return (
    <div className="p-1 gap-16">
      {pagenationElement(pageId, chunkdData.length, getHrefBuilder)}
      <div className="text-right">全:{loadedData.articles.length}件</div>
      {ArticleListElement(displayData, loadedData.categoryTag)}
      {pagenationElement(pageId, chunkdData.length, getHrefBuilder)}
    </div>
  );
}
function getHrefBuilder(page: number): string {
  return `/article/all/page-${page}`;
}
function getPageIdNumber(pageIdStr: string) {
  const m = pageIdStr.match(/page-(\d+)/)!;
  const id = Number(m[1]);
  return id;
}
//export const dynamicParams = true;
export async function generateStaticParams() {
  const loadedData = await ArticleLoader.instance.loadData();
  const chunkdData = chunk(loadedData.articles, PPV);
  return chunkdData.map((data, index) => {
    return { pageId: `page-${index + 1}`, data: data };
  });
}